home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / aminet / os20 / util / hackdisk202.lha / hackdisktest.s < prev    next >
Text File  |  1993-04-04  |  1KB  |  88 lines

  1. ;HackDiskTest.s -- test for hackdisk and print out IDString
  2. ;Returns error level 5 if Hackdisk not installed.
  3.  
  4.     exeobj
  5.     objfile    'c:HackDiskTest'
  6.     multipass
  7.  
  8.     move.l    4,a6
  9.     bsr    InitDOS
  10.     tst.l    DosBase
  11.     beq    .End
  12.     lea    DeviceList(a6),a0
  13.     lea    TrackName(pc),a1
  14.     SYS    Forbid
  15.     SYS    FindName
  16.     SYS    Permit
  17.     tst.l    d0
  18.     beq    .End    ;system is serously screwed!
  19.     move.l    d0,a0
  20.     move.l    LIB_IDSTRING(a0),a0
  21.     move.l    a0,d0
  22.     beq    .NotInstalled
  23.     bsr    Print
  24.     moveq    #0,d0
  25.     cmp.b    #'H',(a0)
  26.     beq    .End
  27. .NotInstalled:
  28.     moveq    #5,d0
  29. .End:    bsr    CloseDOS
  30.     rts
  31.  
  32. Print:
  33. ;Output a string to the CLI
  34. ;Enter with pointer to a zero-terminated string in a0
  35. ;All registers are preserved
  36.  
  37.     movem.l    d0-d7/a0-a6,-(sp)
  38.     move.l    a0,a5
  39.     move.l    DosBase(pc),a6
  40.     move.l    a5,a0
  41.     move.l    a5,a4
  42. .PrintLine:
  43.     tst.b    (a5)+
  44.     bne    .PrintLine
  45.     subq.l    #1,a5
  46.     sub.l    a0,a5
  47.     SYS    Output
  48.     move.l    d0,d1  
  49.     move.l    a4,d2
  50.     move.l    a5,d3
  51.     SYS    Write
  52. .End:    movem.l    (sp)+,d0-d7/a0-a6
  53.     rts
  54.  
  55. InitDOS:
  56. ;Open dos.library
  57. ;Should check DosBase afterward in case of fatel error (unlikely)
  58.  
  59.     movem.l    d0-d7/a0-a6,-(sp)
  60.     move.l    4,a6
  61.     move.l    ThisTask(a6),a0
  62.     tst.l    pr_CLI(a0)    ;executed from CLI?
  63.     beq.s    .End    ;no
  64.     lea    .DosName(pc),a1
  65.     SYS    OldOpenLibrary
  66.     move.l    d0,DosBase
  67. .End:    movem.l    (sp)+,d0-d7/a0-a6
  68.     rts
  69. .DosName:    dc.b    'dos.library',0
  70.     even
  71.  
  72. DosBase:    dc.l    0
  73.  
  74. CloseDOS:    movem.l    d0-d1/a0-a1/a6,-(sp)
  75.     move.l    4,a6
  76.     move.l    DosBase(pc),d0
  77.     beq.s    .End
  78.     clr.l    DosBase
  79.     move.l    d0,a1
  80.     SYS    CloseLibrary
  81. .End:    movem.l    (sp)+,d0-d1/a0-a1/a6
  82.     rts
  83.  
  84. TrackName:
  85.     dc.b    'trackdisk.device',0
  86.  
  87.     end
  88.